﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NHibernate;
using Castle.ActiveRecord;
using Castle.ActiveRecord.Queries;
using NHibernate.Expression;
using Almoxarifado.Models;

namespace Almoxarifado.Models
{   

    [ActiveRecord("[Recurso]")]
    public class Recurso : ActiveRecordBase<Recurso>
    {
        private int _id;
        private string _nome;
        private CategoriaRecurso _categoria;
        private string _descricao;
        private int _quantidade;
        private IList<AlocacaoRecurso> _alocacao;
        private bool retornavel;

       
        [PrimaryKey]
        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }

        [Property]
        public string Nome
        {
            get { return _nome; }
            set { _nome = value; }
        }
        
        [BelongsTo("Categoria", NotNull=true)]
        public CategoriaRecurso Categoria
        {
            get { return _categoria; }
            set { _categoria = value; }
        }

        [Property]
        public string Descricao
        {
            get { return _descricao; }
            set { _descricao = value; }
        }

        [Property]
        public int Quantidade
        {
            get { return _quantidade; }
            set { _quantidade = value; }
        }

        [HasMany]
        public IList<AlocacaoRecurso> Alocacao
        {
            get { return _alocacao; }
            set { _alocacao = value; }
        }

        [Property]
        public bool Retornavel
        {
            get { return retornavel; }
            set { retornavel = value; }
        }

        public static Recurso[] getRecursos()
        {             
            return Recurso.FindAll();
        }   

        public static Recurso getRecurso(int idRecurso)
        {
            return Recurso.Find(idRecurso);
        }

        public static Recurso[] buscaRecursosPorCategoria(CategoriaRecurso cat)
        {
            return Recurso.FindAll(Expression.Eq("Categoria", cat));
            //return null;
        }

    }
}
